// #include <iostream>
// #include <cstring>
// using namespace std;

// int n, m, t;
// int sx, sy, ex, ey;
// int arr[6][6];            // 使用1-based索引，最大到5
// bool visited[6][6];       // 访问标记数组
// int dx[] = {1, 0, -1, 0}; // 下、左、上、右
// int dy[] = {0, -1, 0, 1};
// int count = 0;

// void dfs(int x, int y)
// {
//     if (x == ex && y == ey)
//     {
//         count++;
//         return;
//     }
//     for (int i = 0; i < 4; ++i)
//     {
//         int nx = x + dx[i];
//         int ny = y + dy[i];
//         if (nx < 1 || nx > n || ny < 1 || ny > m)
//             continue;
//         if (!visited[nx][ny] && arr[nx][ny] != -1)
//         {
//             visited[nx][ny] = true;
//             dfs(nx, ny);
//             visited[nx][ny] = false; // 回溯
//         }
//     }
// }

// int main()
// {
//     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//     cin >> n >> m >> t;
//     cin >> sx >> sy >> ex >> ey;
//     memset(arr, 0, sizeof(arr));
//     memset(visited, false, sizeof(visited));

//     for (int i = 0; i < t; ++i)
//     {
//         int x, y;
//         cin >> x >> y;
//         arr[x][y] = -1; // 标记障碍
//     }

//     if (arr[ex][ey] == -1)
//     { // 终点是障碍
//         cout << 0 << endl;
//         return 0;
//     }

//     visited[sx][sy] = true;
//     dfs(sx, sy);
//     cout << count << endl;

//     return 0;
// }

// #include <iostream>
// using namespace std;
// int n, m, t;
// int sx, sy, ex, ey; // start end
// int nx[N], ny[N];   // 障碍点
// const int N = 5;
// int arr[N][N];
// int dx[] = {1,0,-1,0};
// int dy[] = {0,-1,0,1};
// void dfs(int start, int end)
// {
// }
// int main()
// {
//     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//     cin >> n >> m >> t;
//     cin >> sx >> sy >> ex >> ey;
//     for (int i = 0; i < t; i++)
//     {
//         cin >> nx[i] >> ny[i];
//     }
//     for (int i = 0; i < n; i++)
//     {
//         for (int j = 0; j < n; j++)
//         {
//             if (i == nx[j] && j == ny[j])
//             {
//                 arr[i][j] = -1;
//             }
//         }
//     }
//     dfs(sx, sy);
//     return 0;
// }

#include <iostream>

using namespace std;
int arr[6][6];
int n, m, t;
int sx, sy, ex, ey;
int dx[] = {0, 1, 0, -1}; // 右、下、左、上
int dy[] = {1, 0, -1, 0};
bool st[6][6];
int res;
void dfs(int x, int y)
{
    if (x == ex && y == ey)
    {
        res++;
        return;
    }
    for (int i = 0; i < 4; i++)
    {
        int nx = x + dx[i];
        int ny = y + dy[i];
        if (st[nx][ny])
            continue;
        if (arr[nx][ny] == -1)
            continue;
        if (nx < 1 || nx > n || ny < 1 || ny > m)
            continue;
        st[nx][ny] = true;
        dfs(nx, ny);
        st[nx][ny] = false;
    }
}
int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

    cin >> n >> m >> t;
    cin >> sx >> sy >> ex >> ey;
    for (int i = 0; i < t; i++)
    {
        int x, y;
        cin >> x >> y;
        arr[x][y] = -1;
    }
    st[sx][sy] = true;
    dfs(sx, sy);
    cout << res << endl;
    return 0;
}